<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
			1、把js文件放到页面底部
			2、defer属性，实现js文件延迟加载
        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
			ECMAScript：ECMA组织制定的一套标准
			DOM：文档对象模型
			BOM：浏览器对象模型
        // 3.JavaScript 的数据类型有哪些？（5）
			String、Nunber、Boolean、Undefined、Null、Array、Object、Symbol
        // 4.如何进行数据类型的判断？（5）
			1、typeof 用于判断数据类型
			2、instanceof 用于检测构造函数的原型对象（prototype）属性是否在某个实例对象的原型上
			3、使用对象的原型去判断数据类型
        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
			null：表示空值，没有对象指针
			undefined：表示空值，声明了变量但没有赋值
        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
			null == undefined：在值上，两者都表示空值，所以返回true
			null === undefined：两者在数据类型上不一样，所以返回false
			
        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
			
        // 8.如何判断字符串内是否包含指定字符？（5）
			使用：index0f
				lastIndexOf
        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
			1、concat()
			2、join()		//不会
			3、reverse()	//会
			4、slice(startIndex,stopIndex)	//不会
			5、splice()		//会
			6、indexOf()
			7、lastIndexOf()
			8、includes()
        // 10. 请写出下面语句的输出结果：（5）
        var bar = true,
            number = 0;
        console.log(bar + 0);		//1
        console.log(bar + "xyz");	//"1xyz"
        console.log(bar + true);	//2
        console.log(+true);			//2
        console.log(!'bluej');
        console.log(number++);		//0
        console.log(++number);		//1
        console.log(number);		//0

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        // window.prompt("请输入目标时间");


        // 13.把下面数组成员排序打乱；（5）
        var arr = [10, 20, 30, 40, 50, 60];
        function fn (){
        	for(let i =0; i < arr.length+1;i++){
        		var arr1 = Math.round(Math.random() * i)
                arr.push(arr[arr1])
                arr.splice(arr1,1)
        	} 
        }
        fn()
        console.log(arr)
        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
			
        // 14. 将多个数组进行去重合并；（10）
        var arr1 = [1, 2, 3],
            arr2 = [2, 3, 4, 5];
        function fn() {
        	for(let i = 0; i < arr1.length; i++){
        		if(arr2.indexOf(arr1[i]) == -1){
        			arr2.push(arr1[i])
        		}
        	}
        	console.log(arr2)
        }
        fn()
        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
			let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
			let newArr = [];
			for(let i = 0; i < arr.length; i++){
				if(arr.indexOf(arr[i]) != arr.lastindexOf(arr[i])){
					newArr.push(arr[i]);
				}
			}
			console.log(newArr)
        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        var arr = [{
                name: "111",
                sex: "boy",
                age: 18,
                count: 20
            },
            {
                name: "222",
                sex: "girl",
                age: 17,
                count: 30
            },
            {
                name: "333",
                sex: "boy",
                age: 16,
                count: 40
            },
            {
                name: "444",
                sex: "girl",
                age: 15,
                count: 50
            },
            {
                name: "555",
                sex: "boy",
                age: 20,
                count: 60
            },
            {
                name: "666",
                sex: "girl",
                age: 13,
                count: 70
            },
            {
                name: "777",
                sex: "boy",
                age: 14,
                count: 80
            }
        ]
    </script>
</body>

</html>